package yc.web.filter;


import yc.utils.YcConstants;
import yc.web.model.JsonModel;

import javax.servlet.*;
import javax.servlet.annotation.WebFilter;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import javax.servlet.http.HttpSession;
import java.io.IOException;
/*
* 容器技术（ 生命周期 容器技术：Tomcat->jeee， vue）
* */
@WebFilter(value = {"/custOp.action","/resorder.action"})
public class RightFilter extends CommonFilter {
//    public RightFilter(){
//       // System.out.println("我是权限过滤器的构造方法看我被调用了几次：");
//    }
//    @Override
//    public void init(FilterConfig filterConfig) throws ServletException {
//        //System.out.println("RightFilter的init：");
//    }

    @Override
    public void doFilter(ServletRequest servletrequest, ServletResponse servletresponse, FilterChain chain) throws IOException, ServletException {
        //doFilter类似于Servlet中的是service方法。
        //配置的请求都会经过这个方法。
        //System.out.println("hello world I m rightfilter");
       //即判断httpSession中是否有reuser这个键，如果没有，则说明没有登录。
        //如没有登录，则回送 JsonModel的对象 code=0，msg的信息。
        HttpServletRequest request=(HttpServletRequest)servletrequest;
        HttpServletResponse response= (HttpServletResponse) servletresponse;
        String op=request.getParameter("op");
        //再取session
        HttpSession session=request.getSession();
        if (session.getAttribute(YcConstants.REUSER)!=null){
           //表明是已经登录的用户，直接向后
            chain.doFilter(servletrequest,servletresponse);//极重要，这样请求才能继续向后。
        }else if ("findFoodByPage".equals(op)||"findAllFoods".equals(op)){
            chain.doFilter(servletrequest,servletresponse);//极重要，这样请求才能继续向后。
        }else {
            JsonModel jm=new JsonModel();
            jm.setCode(-1);
            jm.setError("用户尚未登录");
            super.writeJson(jm,response);
        }




    }

    @Override
    public void destroy() {
       // System.out.println("right Filter的destory方法");
    }
}
